home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / video / fly8111-.000 / fly8111- / fly8 / keypad.c < prev    next >
C/C++ Source or Header  |  1979-12-31  |  1KB  |  89 lines

  1. /* --------------------------------- keypad.c ------------------------------- */
  2.  
  3. /* This is part of the flight simulator 'fly8'.
  4.  * Author: Eyal Lebedinsky (eyal@ise.canberra.edu.au).
  5. */
  6.  
  7. /* Handler for the keyboard as a pointing device.
  8. */
  9.  
  10. #include "fly.h"
  11.  
  12.  
  13. LOCAL_FUNC void FAR
  14. Kkey (POINTER *p, int key)
  15. {
  16.     switch (key) {
  17.     case KF_UP:            /* counter clockwise */
  18.         if (p->a[1] < 100)
  19.             p->a[1] += 10;
  20.         else
  21.             p->a[1] = 100;
  22.         break;
  23.     case KF_DOWN:            /* clockwise */
  24.         if (p->a[1] > -100)
  25.             p->a[1] -= 10;
  26.         else
  27.             p->a[1] = -100;
  28.         break;
  29.  
  30.     case KF_RIGHT_TURN:        /* clockwise */
  31.         if (p->a[0] > -100)
  32.             p->a[0] -= 10;
  33.         else
  34.             p->a[0] = -100;
  35.         break;
  36.     case KF_LEFT_TURN:        /* counter clockwise */
  37.         if (p->a[0] < 100)
  38.             p->a[0] += 10;
  39.         else
  40.             p->a[0] = 100;
  41.         break;
  42.  
  43.     default:
  44.         std_key (p, key);
  45.         break;
  46.     }
  47. }
  48.  
  49. LOCAL_FUNC int FAR
  50. Kcal (POINTER *p)
  51. {
  52.     p->a[0] = p->a[1] = 0;
  53.     p->l[0] = p->l[1] = 0;
  54.     return (0);
  55. }
  56.  
  57. LOCAL_FUNC int FAR
  58. Kread (POINTER *p, int transfer)
  59. {
  60.     if (transfer) {
  61.         p->l[0] = p->a[0];
  62.         p->l[1] = p->a[1];
  63.     }
  64.     do_btns (p, NULL, 0);
  65.     return (0);
  66. }
  67.  
  68. LOCAL_FUNC int FAR
  69. Kinit (POINTER *p, char *options)
  70. {
  71.     return (Kcal (p));
  72. }
  73.  
  74. LOCAL_FUNC void FAR
  75. Kterm (POINTER *p)
  76. {}
  77.  
  78. struct PtrDriver NEAR PtrKeypad = {
  79.     "KEYPAD",
  80.     0,
  81.     NULL,    /* extra */
  82.     Kinit,
  83.     Kterm,
  84.     Kcal,
  85.     Kcal,            /* center */
  86.     Kread,
  87.     Kkey
  88. };
  89.